package desafio;
import java.util.ArrayList;


public class Jogador {
	private String nome;
	private boolean computador = false;
	private ArrayList<Carta> cartas = new ArrayList<Carta>();
	private int pontosTotal;
	private int pontos;
		
	public Jogador() {}
	
	public Jogador(String nome, boolean computador) {
		this.nome = nome;
		this.computador = computador;		
	}
	
	public void inicializar(){
		cartas.clear();
		pontos = 0;
	}
	
	public void setCartas(ArrayList<Carta> lista){
		this.cartas = lista;
	}
	
	public void addCartas(Carta carta){
		this.cartas.add(carta);
	}
	
	public ArrayList<Carta> getCartas(){
		return this.cartas;
	}
	
	public Carta removeCarta(int index){
		return this.cartas.remove(index);		
	}	
	
	public void setPontos(int pontos) {
		this.pontos = pontos;
	}
	
	public int getPontos(char negativa) {
		pontos = 0;
		for (Carta c : cartas){
			if(c.getNaipe() == negativa){
				pontos += -1*c.getNumero();
			}else{
				pontos += c.getNumero();
			}
		}
		return pontos;
	}
	
	public int getSomaPontos(char negativa, int coringa, boolean emDesafio){
		pontos = 0;
		for (Carta c : cartas){
			if(c.getNaipe() == negativa){
				if (emDesafio && (coringa == c.getNumero())){
					pontos -= 2*c.getNumero();
				}else{
					pontos -= c.getNumero();
				}
			}else{
				if (emDesafio && (coringa == c.getNumero())){
					pontos += 2*c.getNumero();
				}else{
					pontos += c.getNumero();
				}
			}
		}
		return pontos;
	}
	
	public int getMediaPontos(char negativa){
		return getMediaPontos(negativa, 0, false);
	}
	
	public int getMediaPontos(char negativa, int coringa, boolean emDesafio){
		pontos = 0;
		for (Carta c : cartas){
			if(c.getNaipe() == negativa){
				if (emDesafio && (coringa == c.getNumero())){
					pontos -= 2*c.getNumero();
				}else{
					pontos -= c.getNumero();
				}
			}else{
				if (emDesafio && (coringa == c.getNumero())){
					pontos += 2*c.getNumero();
				}else{
					pontos += c.getNumero();
				}
			}
		}
		return (pontos / cartas.size());
	}
	
	public void setPontosTotal(int pontosTotal) {
		this.pontosTotal = pontosTotal;
	}
	
	public int getPontosTotal() {
		return pontosTotal;
	}
	
	public String getNome(){
		return nome;
	}
	
	public boolean isComputador(){
		return computador;
	}
	
	public void addPontosTotal(int pontos){
		this.pontosTotal += pontos;
	}
}
